// components/removeList/removeList.js

const app = getApp()
const db = wx.cloud.database() 
const _ = db.command //获取数据库操作符

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // message组件中传下来的消息id
    messageId: String
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 消息队列
    userMessage: {}
  },

  // 小程序基础库版本2.2.3起推荐的定义生命周期的方式
  lifetimes:{
    // 在组件实例进入页面节点树时执行，此时this.data已被初始化为组件的当前值
     attached: function() {
      //  获取消息队列
      //  调用user表，根据messageId指定返回结果中记录需返回的字段（userPhoto、nickaName）
       db.collection('users').doc(this.data.messageId).field({
         userPhoto: true,
         nickName: true
       }).get().then((res) => { //获取数据成功

        // 更新数据
        this.setData({
          userMessage: res.data
        })
       })
     }
   },

  /**
   * 组件的方法列表
   */
  methods: {

    // 用户点击删除
    handleDelMessage() {
      // 弹出提示框
      wx.showModal({
        title: '提示信息',
        content: '删除消息',
        confirmText: '删除',
        success:(res) => { //弹出成功
          if( res.confirm ){ //用户点击确定
            
            // 调用数据库删除消息
            this.removeMessage()

          }else if(res.cancel) { //用户点击取消 
           console.log("用户点击取消")
           }
        }
      })
    },
    
    // 用户点击好友申请项
    handleAddFriend() {
      // 弹出提示框
      wx.showModal({
        title: '提示信息',
        content: '申请好友',
        confirmText: '同意',
        success:(res) => { //弹出成功
          if( res.confirm ){ //用户点击
             
            // 调用user表，根据userInfo._id修改用户好友列表
            db.collection('users').doc(app.userInfo._id).update({
              data:{
                friendList: _.unshift(this.data.messageId)
              }
            }).then((res) => {});

            // 调用update云函数
            wx.cloud.callFunction({
              name: 'update',
              data: { //传入以下参数
                collection: 'users',
                doc: this.data.messageId,
                data: `{friendList: _.unshift('${app.userInfo._id}')}`
              }
            }).then((res => {}));
 
            // 操作数据库删除该条好友请求
            this.removeMessage()

          }else if(res.cancel) { //用户点击返回  
           console.log("用户点击取消")
           }
        }
      })  
  },

  // 操作数据库删除消息
  removeMessage() {
    // 引用message表
    db.collection('message').where({
      userId: app.userInfo._id //根据要删除消息的用户id
    }).get().then( (res)=> { //删除成功
      let list = res.data[0].list //获取新的消息列表

      list = list.filter((val,i) => {
        return val != this.data.messageId //过滤掉删除了的消息，返回未删除的消息
      })

      wx.cloud.callFunction({//调用update云函数
        name: 'update',
        data: {//传入以下的参数
          collection: 'message',
          where: {
            userId: app.userInfo._id
          },
          data: {
            list
          }
        }
      }).then((res) => {//调用成功
        this.triggerEvent('myevent',list) //调用message组件传过来的myevent方法，list为更新之后的数组
      })

    })
  }
}
})
